
package GUI.Interface;

import Model.ListUser;
import Model.PathFile;

/**
 * L'interface RefreshInterface définie les methodes qui actualisent la vue en fonction
 * des signaux reçues.
 * @author      Frank Djomo
 * @author      Christelle SIAGO HAPPI
 * @author      djomopoueme@gmail.com
 * @author      christelle.siagohappi@gmail.com
 * @version     1.0
 * @see ListUser
 */
public interface RefreshInterface {
    /**
    * indique si l'utilisateur est connecté au systeme 
    * @return <code>true</code> si utilisateur est connecté
    *           <code>false</code> sinon 
    */
    public boolean isConnected();
    /**
    * Réactualise l'affichage de la conversation
    * @param sMsg Message reçu d'un utilisateur distant
    * @param rUser Login de l'utilisateur distant qui a envoyé le message
    */
    public void refreshMsg(String sMsg, String rUser);
    /**
    * Traite une demande de transfert 
    * @param sFilename PathFile du Fichier à transmettre
    * @param rUser Login de l'utilisateur distant qui a envoyé le message
    * @see PathFile
    */
    public void refreshFileRequest(PathFile sFilename,String rUser); 
    /**
    * Traite une reponse d'une deamnde de transfert de fichier
    * @param haveAccept  <code>true</code> si utilisateur accepte de recevoir un fichier
    *           <code>false</code> sinon 
    */
    public void refreshFileResponse(boolean haveAccept);
    /**
    * Wizz la fenetre d'un utilisateur distant
    * @param remoteLogin  Login de l'utilisateur distant
    */
    public void refreshWizz(String remoteLogin);
    /**
    * Notification de presence
    * @param remoteLogin  Login de l'utilisateur distant
    * @param status       Status de l'utilisateur local
    */
    public void refreshPresence(String remoteLogin,String status);
    /**
    * Gère la reception d'une notification d'ecriture 
    * @param remoteLogin Login de l'utilisateur distant
    * @param isWriting   <code>true</code> si utilisateur ecrit 
    *                  <code>false</code> sinon 
    * @throws ControllerReceivedException
    */
    public void refreshComposing(String remoteLogin,boolean isWriting);
   
}
